#ifndef BRUSHTOOL_H
#define BRUSHTOOL_H
#include "brushutilities.h"



using namespace std;

class BrushTool : virtual public Tool
{

    BrushTool();
    BrushUtilities* util;


public:
    static BrushTool* getInstance();

    int getSize();
    int getShape(); //returns index type of shape
    int getHeight();
    int getBreadth();
     const vector< pair<string, set<vector3<int> > > >& getCustomShapes();

     string getShapeName(int i);


     Result setSize(int a);
     Result setSize(int s, int h, int b);
     Result setShape(int a);
     Result setHeight(int a);
     Result setBreadth(int a);
     Result setAxis(FIXED_AXES axis, bool toFix);
     Result setShapeName(int identifier, string n);
     Result addShape(); //adds custom shape, based on selection
     Result addShape(string n);
     Result deleteShape(int i);

    string getType();
    void display();

    //UI methods
    Result mouseEnterEvent(QEvent *event);
    Result mouseLeaveEvent(QEvent *event);
    Result keyPressEvent(QKeyEvent *event);
    Result keyReleaseEvent(QKeyEvent *event);
    Result mouseMoveEvent(QMouseEvent *event);
    Result mousePressEvent(QMouseEvent *event);

    //Friend
    friend class BrushToolATD;


};
#endif // BRUSHTOOL_H
